//package com.quanshi.websocket.utils;
//
//import com.quanshi.websocket.utils.design.MessageHandler;
//import com.quanshi.websocket.utils.design.MessageHandlerFactory;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.stereotype.Component;
//import org.springframework.web.socket.CloseStatus;
//import org.springframework.web.socket.TextMessage;
//import org.springframework.web.socket.WebSocketSession;
//import org.springframework.web.socket.handler.TextWebSocketHandler;
//
//import java.io.IOException;
//import java.util.HashSet;
//import java.util.Set;
//
//@Log4j2
//@Component
//public class WebSocketHandler extends TextWebSocketHandler {
//    private MessageHandlerFactory messageHandlerFactory = new MessageHandlerFactory();
//    private Set<WebSocketSession> sessions = new HashSet<>();
//
//    @Override
//    public void afterConnectionEstablished(WebSocketSession session) {
//        // 记录新连接的客户端
//        sessions.add(session);
//        log.info("有新的客户端连接加入，客户ID={}，当前总在线人数为：{}", session.getId(), sessions.size());
//    }
//
//    @Override
//    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
//        // 获取客户端发送的消息
//        String messageType = message.getPayload();
//
//        log.info("收到客户端消息：{}", messageType);
//
//        // 根据消息类型选择合适的消息处理器
//        MessageHandler messageHandler = messageHandlerFactory.getMessageHandler(messageType);
//
//        if (messageHandler != null) {
//            // 处理消息
//            messageHandler.handle(message.getPayload(), session);
//
////            sendToAll(message.getPayload());
//        }
//    }
//
//    @Override
//    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
//        // 移除断开连接的客户端
//        sessions.remove(session);
//        System.out.println("客户端断开连接：" + session.getId());
//    }
//
//    public void sendToAll(String message) {
//        // 遍历所有客户端并发送消息
//        for (WebSocketSession session : sessions) {
//            try {
//                session.sendMessage(new TextMessage("群发消息："+message));
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
//}
